package com.ruoyi.yljf.util;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.yljf.mapper.CourseNoticeMapper;
import com.ruoyi.yljf.mapper.DrugNoticeMapper;
import com.ruoyi.yljf.mapper.JingfangNoticeMapper;
import com.ruoyi.yljf.mapper.MedicalNoticeMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

@Component
public class NoticeMapperFactory {

    private final CourseNoticeMapper courseNoticeMapper;
    private final DrugNoticeMapper drugNoticeMapper;
    private final JingfangNoticeMapper jingfangNoticeMapper;
    private final MedicalNoticeMapper medicalNoticeMapper;

    @Autowired
    public NoticeMapperFactory(
            CourseNoticeMapper courseNoticeMapper,
            DrugNoticeMapper drugNoticeMapper,
            JingfangNoticeMapper jingfangNoticeMapper,
            MedicalNoticeMapper medicalNoticeMapper) {
        this.courseNoticeMapper = courseNoticeMapper;
        this.drugNoticeMapper = drugNoticeMapper;
        this.jingfangNoticeMapper = jingfangNoticeMapper;
        this.medicalNoticeMapper = medicalNoticeMapper;
    }

    public <T extends BaseMapper<?>> T getMapper(String type) {
        switch (type) {
            case "课程":
                return (T) courseNoticeMapper;
            case "药材":
                return (T) drugNoticeMapper;
            case "经方":
                return (T) jingfangNoticeMapper;
            case "医案":
                return (T) medicalNoticeMapper;
            default:
                throw new IllegalArgumentException("Unknown type: " + type);
        }
    }
}